<!DOCTYPE html>
<!--
 *  Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
 *
 *  Use of this source code is governed by a BSD-style license
 *  that can be found in the LICENSE file in the root of the source
 *  tree.
-->
<html>
<head>

  <meta charset="utf-8">
  <meta name="description" content="Client-side WebRTC code samples">
  <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1, maximum-scale=1">
  <meta itemprop="description" content="Client-side WebRTC code samples">
  <meta itemprop="image" content="images/webrtc-icon-192x192.png">
  <meta itemprop="name" content="WebRTC code samples">
  <meta name="mobile-web-app-capable" content="yes">
  <meta id="theme-color" name="theme-color" content="#ffffff">

  <base target="_blank">

  <title>WebRTC samples</title>

  <link rel="icon" sizes="192x192" href="images/webrtc-icon-192x192.png">
  <link href="//fonts.googleapis.com/css?family=Roboto:300,400,500,700" rel="stylesheet" type="text/css">
  <link rel="stylesheet" href="samples/web/css/main.css" />

  <style>
    h2 {
      font-size: 1.5em;
      font-weight: 500;
    }
    h3 {
      border-top: none;
    }
    section {
      border-bottom: 1px solid #eee;
      margin: 0 0 1.5em 0;
      padding: 0 0 1.5em 0;
    }
    section:last-child {
      border-bottom: none;
      margin: 0;
      padding: 0;
    }
  </style>
</head>
<body>
  <div id="container">

    <h1>WebRTC samples</h1>

    <section>

      <p>This is a repository for client-side WebRTC code samples and the <a href="https://apprtc.appspot.com" title="AppRTC video chat client">AppRTC</a> video chat client. The source for these samples is available at <a href="//github.com/GoogleChrome/webrtc" title="View Github repositry for these files">github.com/GoogleChrome/webrtc</a>.</p>

      <p>Some of the samples use new browser features. They may only work in <a href="//www.google.co.uk/intl/en/chrome/browser/canary.html" title="Download Chrome Canary">Chrome Canary</a> and/or <a href="http://www.mozilla.org/firefox/beta/" title="Download Firefox Beta">Firefox Beta</a>, and may require flags to be set.</p>

      <p>Most of the samples use <a href="//github.com/GoogleChrome/webrtc/blob/master/samples/web/js/adapter.js">adapter.js</a>, a shim to insulate apps from spec changes and prefix differences. (In fact, the standards and protocols used for WebRTC implementations are highly stable, and there are only a few prefixed names. For full interop information, see <a href="//www.webrtc.org/web-apis/interop">webrtc.org/web-apis/interop</a>.)</p>

      <p>Please note that all samples that use <code>getUserMedia()</code> must be run from a server. Calling <code>getUserMedia()</code> from a file:// URL will result in a PERMISSION_DENIED NavigatorUserMediaError.</p>

      <p><a href="http://www.webrtc.org/testing" title="Command-line flags for WebRTC testing">webrtc.org/testing</a> lists command line flags useful for development and testing with Chrome.</p>

      <p>For more information about WebRTC, we maintain a list of <a href="//docs.google.com/document/d/1idl_NYQhllFEFqkGQOLv8KBK8M3EVzyvxnKkHl4SuM8/edit">WebRTC Resources</a>. If you've never worked with WebRTC, we recommend you start with the 2013 Google I/O <a href="//www.youtube.com/watch?v=p2HzZkd2A40">WebRTC presentation</a>.</p>

      <p>Patches and issues welcome! See <a href="https://github.com/GoogleChrome/webrtc/blob/master/CONTRIBUTING">CONTRIBUTING</a> for instructions. The <a href="https://bit.ly/webrtcdevguide">Developer's Guide</a> for this repo has more information about code style, structure and validation.</p>

    </section>

    <section>

      <h2 id="the-demos">The demos</h2>

      <h3 id="getusermedia">getUserMedia</h3>

      <p><a href="samples/web/content/getusermedia/gum">Basic getUserMedia demo</a></p>

      <p><a href="samples/web/content/getusermedia/canvas">Use getUserMedia with canvas</a></p>

      <p><a href="samples/web/content/getusermedia/filter">Use getUserMedia with canvas and CSS filters</a></p>

      <p><a href="samples/web/content/getusermedia/resolution">Choose camera resolution</a></p>

      <p><a href="samples/web/content/getusermedia/source">Choose camera and microphone</a></p>

      <p><a href="samples/web/content/getusermedia/audio">Audio-only getUserMedia() output to local audio element</a></p>

      <p><a href="samples/web/content/getusermedia/volume">Audio-only getUserMedia() displaying volume</a></p>

      <p><a href="samples/web/content/getusermedia/face">Face tracking, using getUserMedia and canvas</a></p>

      <h3 id="peerconnection">RTCPeerConnection</h3>

      <p><a href="samples/web/content/peerconnection/pc1">Basic peer connection demo</a></p>

      <p><a href="samples/web/content/peerconnection/audio">Audio-only peer connection demo</a></p>

      <p><a href="samples/web/content/peerconnection/multiple">Multiple peer connections at once</a></p>

      <p><a href="samples/web/content/peerconnection/multiple-relay">Forward the output of one PC into another</a></p>

      <p><a href="samples/web/content/peerconnection/munge-sdp">Munge SDP parameters</a></p>

      <p><a href="samples/web/content/peerconnection/pr-answer">Use pranswer when setting up a peer connection</a></p>

      <p><a href="samples/web/content/peerconnection/constraints">Constraints and stats</a></p>

      <p><a href="samples/web/content/peerconnection/create-offer">Display createOffer output for various scenarios</a></p>

      <p><a href="samples/web/content/peerconnection/dtmf">Use RTCDTMFSender</a></p>

      <p><a href="samples/web/content/peerconnection/states">Display peer connection states</a></p>

      <p><a href="samples/web/content/peerconnection/trickle-ice">ICE candidate gathering from STUN/TURN servers</a></p>

      <p><a href="samples/web/content/peerconnection/webaudio-input">Web Audio output as input to peer connection</a></p>

      <h3 id="datachannel">RTCDataChannel</h3>

      <p><a href="samples/web/content/datachannel">Basic data channel demo</a></p>

      <h3 id="videoChat">Video chat</h3>

      <p><a href="//apprtc.appspot.com">AppRTC video chat client</a> powered by Google App Engine</p>

      <p><a href="//apprtc.appspot.com/html/params.html">AppRTC URL parameters</a></p>

    </section>

    <section>

      <h2 id="test-pages">Test pages</h2>

      <p><a href="samples/web/content/manual-test/audio-and-video">Audio and video streams</a></p>

      <p><a href="samples/web/content/manual-test/iframe-apprtc">Iframe apprtc</a></p>

      <p><a href="samples/web/content/manual-test/iframe-video">Iframe video</a></p>

      <p><a href="samples/web/content/manual-test/multiple-audio">Multiple audio streams</a></p>

      <p><a href="samples/web/content/manual-test/multiple-peerconnections">Multiple peerconnections</a></p>

      <p><a href="samples/web/content/manual-test/multiple-video">Multiple video streams</a></p>

      <p><a href="samples/web/content/manual-test/multiple-video-devices">Multiple video devices</a></p>

      <p><a href="samples/web/content/manual-test/peer2peer">Peer2peer</a></p>

      <p><a href="samples/web/content/manual-test/peer2peer-iframe">Peer2peer iframe</a></p>

      <p><a href="samples/web/content/manual-test/single-audio">Single audio stream</a></p>

      <p><a href="samples/web/content/manual-test/single-video">Single video stream</a></p>

    </section>

    <a href="//github.com/GoogleChrome/webrtc" title="View the repository" id="viewSource">github.com/GoogleChrome/webrtc</a>

  </div>

  <script src="samples/web/js/lib/ga.js"></script>

</body>
</html>
